package model;

import java.util.List;
import java.util.Observable;

public abstract class Board  extends Observable {
	
	public abstract  class Move {
		abstract public void doMove();
	}

	abstract public List<Move> getMoves();

	abstract public boolean hasWon();

	abstract public long longHashCode();

	abstract public boolean undo();

	abstract public int getDepth();
	
	abstract public int getWork();

        public void rewind() {
            while(undo()){}
        }

        abstract public void reset();

}
